草庐IT

vc x86.mis

全部标签

c++ - C++ 中的读写线程安全智能指针,x86-64

我开发了一些无锁数据结构,但出现了以下问题。我有一个编写器线程,它在堆上创建对象并将它们包装在带有引用计数器的智能指针中。我也有很多阅读线程,它们与这些对象一起工作。代码可能如下所示:SmartPtrptr;classReader:publicThread{virtualvoidRun{for(;;){SmartPtrlocal(ptr);//dosmth}}};classWriter:publicThread{virtualvoidRun{for(;;){SmartPtrnewPtr(newObject);ptr=newPtr;}}};intmain(){Pool*pool=Syst

C++11 原子 x86 内存排序

在C++0x中原子变量的文档之一中,在描述内存顺序时,它提到:Release-AcquireOrderingOnstrongly-orderedsystems(x86,SPARC,IBMmainframe),release-acquireorderingisautomatic.NoadditionalCPUinstructionsareissuedforthissynchronizationmode,onlycertaincompileroptimizationsareaffected...首先,x86遵循严格的内存排序是真的吗?总是强加这一点似乎效率很低。意味着每次写入和读取都有一个

C++:使用 "Undefined symbols for architecture x86_64"时出现 "std"错误

我是一名新的C++程序员,我正在尝试运行一个简单的我已经创建了一个文件“test.cpp”,我正在使用gcc在命令行上对其进行编译。命令是“gcctest.cpp-otest”。然后我运行“./test”。(是的,这个过程听起来很基本。)文件如下:#includeintmain(){printf("HelloWorld!");std::cout当我包含包含std的行时,gcc返回以下长错误:Undefinedsymbolsforarchitecturex86_64:"std::__1::locale::use_facet(std::__1::locale::id&)const",ref

VS Code 1.86版本亮点介绍:强化窗口缩放自由度,引入AI语音助手与多文件差异编辑器"

微软于2月2日发布了VisualStudioCode(VSCode)1.86版本,此次更新带来了多项重要功能升级和改进,旨在提升开发者的使用体验与工作效率。一、窗口缩放功能优化与个性化设置微软在VisualStudioCode(VSCode)1.86版本中对窗口缩放功能进行了重大升级。此次更新引入了一个名为“window.zoomPerWindow”的全新默认设置选项,使得用户能够独立且灵活地调整每个活动窗口的缩放级别。这项改进赋予了开发者前所未有的自由度,可以根据自身需求和视觉舒适度,实现对不同窗口进行放大、缩小或重置缩放比例的操作,从而有效提升了编码环境的可定制性和用户体验。二、语音交互与

c++ - 什么 C++ 代码编译成 x86 REP 指令?

我正在用C++将元素从一个数组复制到另一个数组。我在x86中发现了repmovs指令,它似乎将ESI中的数组复制到EDI中大小为ECX的数组。但是,无论是for还是while循环,我都尝试编译为VS2008中的repmovs指令(在IntelXeonx64处理器上)。我如何编写将编译为该指令的代码? 最佳答案 老实说,你不应该。REP是指令集中的一种过时保留,实际上非常慢,因为它必须调用CPU内部的微编码子程序,该子程序具有ROM查找延迟并且也是非流水线的。几乎在每个实现中,您都会发现memcpy()编译器内在的功能更易于使用且运行

c++ - 体系结构 x86_64 的 G++ undefined symbol

我正在学习C++,并接到了创建Vector3D类的作业。当我尝试在OSX上使用G++编译main.cpp时,出现以下错误消息。为什么会这样?g++main.cppUndefinedsymbolsforarchitecturex86_64:"Vector3DStack::Vector3DStack(double,double,double)",referencedfrom:_mainincc9dsPbh.old:symbol(s)notfoundforarchitecturex86_64main.cpp#include;#include"Vector3DStack.h";usingnam

c# - C++ x86/x64 结构对齐 + .NET AnyCPU C++ 库使用(调用/回调)

由于我之前的问题没有成功(“C#AnyCPUlibraryusingx86/x64CAPI-packingstructures,callsandcallbacks”),我将写一个更简洁和抽象的问题。p>图片:我工作的公司有一个软件要移植到64位上。该软件由一个BASE库(带有CAPI的C++)和两个CAPI包装器组成:一个C++包装器和一个.NET包装器。C++BASE库和C++WRAPPER应该有x86/x64构建配置。.NETWRAPPER应该只有一个AnyCPU构建配置。从.NETWRAPPER中选择正确的库已成功完成(C++BASE库(x86/x64)正在两个单独的命名空间中加

c++ - OpenMP 原子和非原子读/写在 x86_64 上产生相同的指令

根据OpenMP规范(v4.0),由于i的不同步读/写,以下程序包含可能的数据竞争:inti{0};//std::atomici{0};voidwrite(){//#pragmaompatomicwrite//seq_csti=1;}intread(){intj;//#pragmaompatomicread//seq_cstj=i;returnj;}intmain(){#pragmaompparallel{/*codethatcallsbothwrite()andread()*/}}我想到的可能的解决方案在代码中显示为注释:保护i的读写与#pragmaompatomicwrite/re

如何访问汇编x86中的2D数组

如何在组装中使用2D数组?我宣布intarray[100][2]在C中,我想访问array[4][0]在组装中看答案在C中,array[i][j]是相同的:*(*(array+i)+j)当您在C中添加指针时,它会自动考虑指向的类型的大小。在集会中不是这种情况,因此您必须自己做。基本公式只是:(offsetof(array)+(sizeof(int)*i))+(sizeof(int)*j)自int几乎可以肯定的是4个字节,大会等同于:inttemp=array[4][0];将会:moveax,DWORDPTR[array+16]因为(4*4)+(0*4)==16。

c++ - 无法在 x86 上以 SSE 类型访问内存,但在 x64 上工作正常

我有一些使用MSVCSSE内在函数编写的代码。__m128zero=_mm_setzero_ps();__m128center=_mm_load_ps(&sphere.origin.x);__m128boxmin=_mm_load_ps(&rhs.BottomLeftClosest.x);__m128boxmax=_mm_load_ps(&rhs.TopRightFurthest.x);__m128e=_mm_add_ps(_mm_max_ps(_mm_sub_ps(boxmin,center),zero),_mm_max_ps(_mm_sub_ps(center,boxmax),ze